home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // AFdigitale.it - by Pivello
-
- (**************************************************
- * Movie importation script for: *
- * AFdigitale.it, http://www.AFdigitale.it *
- * *
- * (c) 2004 Pivello *
- * *
- * 14.04.2004 First Public Release *
- * *
- * For use with Ant Movie Catalog 3.4.1 *
- * www.ant.be.tf/moviecatalog ╖╖╖ www.buypin.com *
- * *
- * The source code of the script can be used in *
- * another program only if full credits to *
- * script author and a link to Ant Movie Catalog *
- * website are given in the About box or in *
- * the documentation of the program *
- ***************************************************)
-
- program AFdigitale;
-
- const
- UrlBase = 'http://www.afdigitale.it';
- QueryBase = UrlBase + '/edisport/afdigitale/dvd.nsf/DVDS?SearchView&Query=';
-
- var
- Page: TStringList;
- MovieUrl, MovieName, OriginalStr, TranslatedStr, PageStr: string;
-
- // ---------------------------------------------
- // PAGE PACKING (remove extra spaces, tabs & CR)
- // IN: page Url (string)
- // OUT: compact page (string)
- // ---------------------------------------------
- function RemoveExtraChars(Url: string): string;
- var
- Temp: string;
- PackedPage: string;
- CharPos: Integer;
- n: Integer;
- begin
- Page.Text := GetPage(Url);
- for n:=0 to Page.Count-1 do
- PackedPage := PackedPage + ' ' + Page.GetString(n);
- repeat
- CharPos := pos(' ', PackedPage);
- if CharPos = 0 then
- CharPos := pos(#9, PackedPage);
- if CharPos <> 0 then
- begin
- Temp := copy(PackedPage, 1, CharPos -1);
- Delete(PackedPage, 1, CharPos);
- PackedPage := Temp + PackedPage;
- end;
- until((pos(' ', PackedPage) = 0) and (pos(#9, PackedPage) = 0));
- result := PackedPage;
- end;
-
- // ---------------------------------
- // GET FIELD VALUES FROM PACKED PAGE
- // IN: Start marker (String)
- // End marker (string)
- // Cut Start Marker (bool)
- // Cut End Marker (bool)
- // OUT: value (string)
- // ---------------------------------
- function GetValue(StartMarker, EndMarker: string; CutStartMarker, CutEndMarker: boolean): string;
- var
- StartPos: integer;
- EndPos: integer;
- Value: string;
- begin
- Value := '';
- StartPos := pos(StartMarker, PageStr);
- if (StartPos > 0) then
- Delete(PageStr, 1, StartPos-1);
- StartPos := pos(StartMarker, PageStr);
- EndPos := pos(EndMarker, PageStr);
- if ((StartPos > 0)and(EndPos > 0)) then
- begin
- if CutStartMarker then
- StartPos := StartPos + length(StartMarker);
- if not CutEndMarker then
- EndPos := EndPos + length(EndMarker);
- Value := copy(PageStr, StartPos, EndPos-Startpos);
- Delete(PageStr, 1, EndPos);
- end;
- result := Value;
- end;
-
- // -----------------------
- // ANALYZE MOVIE DATA PAGE
- // IN: none
- // OUT: set Ant fields
- // -----------------------
- procedure AnalyzeMoviePage;
- var
- TempStr: string;
- begin
- // Get packed title main page
- PageStr := RemoveExtraChars(MovieUrl);
- // image
- GetPicture(UrlBase + getValue('ROWSPAN=2><IMG SRC="','" WIDTH=',true,true), False);
- // Translated Title field
- SetField(fieldTranslatedTitle, getValue('COLOR="000080" FACE="Verdana">','</FONT></B><BR>',true,true));
- // Original Title field
- SetField(fieldOriginalTitle, getValue('COLOR="000080" FACE="Verdana">','</FONT></TD>',true,true));
- if((GetField(fieldOriginalTitle)='id') or (GetField(fieldOriginalTitle)=''))then
- SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));
- // Category Field
- SetField(fieldCategory, getValue('</B><B><FONT SIZE=1 COLOR="000080" FACE="Verdana">','</FONT></B><BR>',true,true));
- // Director Field
- SetField(fieldDirector, getValue('<B><FONT SIZE=1 COLOR="000080" FACE="Verdana">','</FONT></B><BR>',true,true));
- // Actors Field
- SetField(fieldActors, getValue('<B><FONT SIZE=1 COLOR="000080" FACE="Verdana">','</FONT></B><BR>',true,true));
- // YearField
- SetField(fieldYear, getValue('<B><FONT SIZE=1 COLOR="000080" FACE="Verdana">','</FONT></B><BR>',true,true));
- // Producer Field
- Delete (PageStr,1,pos('Distribuito da:',PageStr));
- SetField(fieldProducer, getValue('<B><FONT SIZE=1 COLOR="000080" FACE="Verdana">','</FONT></B>',true,true));
- // Duration field
- Delete (PageStr,1,pos('FACE="Verdana">Durata:</FONT>',PageStr));
- SetField(fieldLength, getValue('COLOR="ffffff" FACE="Verdana">','</FONT></B><B>',true,true));
- // Size Field
- Delete (PageStr,1,pos('FACE="Verdana">Supporto: </FONT>',PageStr));
- SetField(fieldSize, getValue('FACE="Verdana">','</FONT></B><BR>',true,true));
- // Description Field
- Delete (PageStr,1,pos('Qualitα artistica:',PageStr));
- TempStr := getValue('<FONT SIZE=2 FACE="Verdana">','</FONT><BR>',true,true);
- HTMLDecode(TempStr);
- SetField(fieldDescription, TempStr);
- // Comments Field
- Delete (PageStr,1,pos('Qualitα dell''edizione:',PageStr));
- TempStr := getValue('<FONT SIZE=2 FACE="Verdana">','</FONT><BR>',true,true);
- HTMLDecode(TempStr);
- SetField(fieldComments, TempStr);
- // Movie URL field
- SetField(fieldURL, MovieUrl);
- // Display search result
- DisplayResults;
- end;
-
- // ------------------------------------------------------------------
- // FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
- // if OneFilm flag true return Film Id else populate PickTree
- // IN: OneFilm flag (bool)
- // OUT: one page ID (string)
- // ------------------------------------------------------------------
- function PopulatePickTree(OneFilm: boolean): string;
- var
- TempUrl: string;
- TempTitle: string;
- StartPos: integer;
- EndPos: integer;
- begin
- result := '';
- StartPos := pos('<A HREF="', PageStr);
- Delete(PageStr, 1, StartPos - 1);
- if OneFilm then
- begin
- StartPos := pos('<A HREF="', PageStr);
- EndPos := pos('"><div', PageStr);
- if StartPos > 0 then
- begin
- TempUrl := copy(PageStr, StartPos + 9, EndPos-Startpos - 9);
- result := UrlBase + TempUrl;
- end
- end
- else
- begin
- PickTreeClear;
- repeat
- StartPos := pos('<A HREF="', PageStr);
- EndPos := pos('?OpenDocument', PageStr);
- if StartPos > 0 then
- begin
- TempUrl := copy(PageStr, StartPos + 9, EndPos-Startpos + 4);
- Delete(PageStr, 1, EndPos + 1);
- StartPos := pos('''">', PageStr);
- EndPos := pos('</div>', PageStr);
- TempTitle := copy(PageStr, StartPos + 3, EndPos-Startpos - 3);
- Delete(PageStr, 1, EndPos + 1);
- PickTreeAdd(TempTitle, UrlBase + TempUrl);
- end;
- until(StartPos = 0);
- end
- end;
-
- // ---------------------------------
- // ANALYZE FIRST SEARCH RESULT PAGE:
- // IN: none
- // OUT: none
- // ---------------------------------
- procedure AnalyzeSearchPage;
- begin
- PageStr := RemoveExtraChars(MovieUrl);
- if pos('Nessun elemento trovato', PageStr) > 0 then
- ShowMessage('Title not found / Nessun film trovato.')
- else if pos('Si Φ verificato un errore',PageStr) > 0 then
- ShowMessage('Server not available, try later / Server non disponibile, prova pi∙ tardi')
- else
- begin
- if pos('1 elemento trovato', PageStr) > 0 then
- MovieUrl := PopulatePickTree(true) // One title found
- else
- begin
- PopulatePickTree(false); // More titles found..
- if not PickTreeExec(MovieUrl) then // ..select one
- exit;
- end
- AnalyzeMoviePage;
- end;
- end;
-
- // ----------
- // MAIN:
- // IN: none
- // OUT: none
- // ----------
- begin
- if CheckVersion(3,4,1) then
- begin
- TranslatedStr := GetField(fieldTranslatedTitle);
- OriginalStr := GetField(fieldOriginalTitle);
- if (TranslatedStr <> '') then MovieName := TranslatedStr else MovieName := OriginalStr;
- if (Input('AFdigitale.it - By Pivello', 'Enter the title of the movie / Inserire titolo del film:', MovieName)) then
- begin
- Page := TStringList.Create;
- MovieUrl := QueryBase + UrlEncode(MovieName);
- AnalyzeSearchPage;
- Page.Free;
- end;
- end
- else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.1)');
- end.
-